#!/bin/sh

MODULE_NAME="samba"

create_dirs()
{
  if [ ! -d /var/tmp/samba/lock ]; then
    mkdir -p "/var/tmp/samba/lock/"
  fi
  if [ ! -d /var/tmp/samba/pid ]; then
    mkdir -p "/var/tmp/samba/pid/"
  fi
  if [ ! -d /var/tmp/samba/state ]; then
    mkdir -p "/var/tmp/samba/state/"
  fi
  if [ ! -d /var/tmp/samba/etc ]; then
    mkdir -p "/var/tmp/samba/etc"
  fi
  if [ ! -d /var/tmp/samba/private ]; then
    mkdir -p "/var/tmp/samba/private"
  fi
  if [ ! -d /var/tmp/samba/cache ]; then
    mkdir -p "/var/tmp/samba/cache"
  fi
  if [ ! -d /var/tmp/samba/log ]; then
    mkdir -p "/var/tmp/samba/log"
  fi
  if [ ! -d /var/tmp/samba/run ]; then
    mkdir -p "/var/tmp/samba/run"
  fi
  if [ ! -d /var/data/samba ]; then
    mkdir -p "/var/data/samba"
  fi
}

export LD_LIBRARY_PATH="/opt/$MODULE_NAME/lib:/opt/$MODULE_NAME/lib/private"

case "$1" in
  start|restart)
        . /opt/$MODULE_NAME/etc/settings
        if [ "$1" = "restart" ]; then
            echo -n "Restarting module $MODULE_NAME: "
            killall nmbd 2> /dev/null
            killall smbd 2> /dev/null
            rm -rf /var/tmp/samba
        else
            echo -n "Starting module $MODULE_NAME: "
        fi
        if [ "$MOD_SAMBA_ENABLED" != "1" ]; then
          echo "skipped"
          exit 0
        fi
        create_dirs
        echo -e \
             "root = $MOD_SAMBA_USER" > /var/tmp/samba/etc/usermap.txt
        echo -e \
             "\n[global]" \
             "\ninterfaces = ${MOD_SAMBA_IFACES//[,]/ }" \
             "\nbind interfaces only = yes" \
             "\nhost msdfs = no" \
             "\nprintcap name = /dev/null" \
             "\nworkgroup = $MOD_SAMBA_WGROUP" \
             "\nnetbios name = $MOD_SAMBA_NBIOSN" \
             "\nusername map = /var/tmp/samba/etc/usermap.txt" \
             "\nguest account = root" \
             "\n[$MOD_SAMBA_DRVN]" \
             "\npath = /var/data/samba" \
             "\nwritable = yes" \
             "\nprintable = no" > /var/tmp/samba/etc/smb.conf
        passwd=$(/usr/bin/decode "$MOD_SAMBA_PASSWD")
        echo -e "$passwd\n$passwd\n" | /opt/samba/bin/smbpasswd -a "root" -s
        /opt/$MODULE_NAME/sbin/nmbd -s /var/tmp/samba/etc/smb.conf -D
        /opt/$MODULE_NAME/sbin/smbd -s /var/tmp/samba/etc/smb.conf -D
        RETVAL=$?
        if [ $RETVAL = 0 ]; then echo "done"; else echo "failed"; fi
        exit $RETVAL
        ;;
  stop)
        echo -n "Stopping module $MODULE_NAME: "
        killall nmbd 2> /dev/null
        killall smbd 2> /dev/null
        RETVAL=$?
        if [ $RETVAL = 0 ]; then echo "done"; else echo "failed"; fi
        rm -rf /var/tmp/samba
        sleep 3
        exit $RETVAL
        ;;
  status)
        echo -n "Module $MODULE_NAME is "
        killall -0 smbd 2> /dev/null
        RETVAL=$?
        if [ $RETVAL = 0 ]; then echo "running"; else echo "stopped"; fi
        exit $RETVAL
        ;;
  defaults)
        cp /opt/$MODULE_NAME/etc/defaults /opt/$MODULE_NAME/etc/settings 2> /dev/null
        killall smbd 2> /dev/null
        ;;
  *)
        echo "Usage: $0 {start|stop|restart|status|defaults}"
        exit 1
esac
